package at.ac.tuwien.swa075.telco.auc.service;

import at.ac.tuwien.swa075.telco.auc.AucException;

/**
 * A service interface that provides methods for security administration.
 * 
 * @author Johannes Mayr <johannes.mayr@chello.at>
 */
public interface ISecurityAdministration {

	/**
	 * Resets the pin code without verification. This service is available to
	 * internal security management.
	 * 
	 * @param imsi
	 *            The subscriber id.
	 * @param pin
	 *            The pin code to set for the given subscriber id.
	 * @throws AucException
	 *             An error occured while reseting the pin code.
	 */
	public void resetPin(String imsi, String pin) throws AucException;

	/**
	 * Activates a deactivated or newly created authentication profile.
	 * 
	 * @param imsi
	 *            The subscriber identity to activate.
	 * @throws AucException
	 *             An error occured during the activation.
	 */
	public void activateSubscriber(String imsi) throws AucException;

	/**
	 * Deactivates an authentication profile. After all future logons are
	 * denied.
	 * 
	 * @param imsi
	 *            The subscriber identity.
	 * @throws AucException
	 *             An error occured while deactivating the subscriber.
	 */
	public void deactivateSubscriber(String imsi) throws AucException;

	/**
	 * Returns the current AuthenticationStatus. Possible values are 'ACTIVE',
	 * 'CREATED', 'DELETED', 'LOCKED'.
	 * 
	 * @param imsi
	 *            The subscriber identity
	 * @return Current authentication status as string.
	 * @throws AucException
	 *             An error occured while retrieving the authentication status.
	 */
	public String getAutheticationStatus(String imsi) throws AucException;

}
